<?PHP
/**
 * LianPHP日志类库
 * 
 * @author 大春 lianwanchun@163.com
 * @version 0.1 
 * @copyright Copyright &copy; 2010 lian wan chun
 */
class Log extends LianPhp {
	/*
    日志级别 从上到下，由低到高
    EMERG  		严重错误: 导致系统崩溃无法使用
    ALERT    	警戒性错误: 必须被立即修改的错误
    CRIT      	临界值错误: 超过临界值的错误，例如一天24小时，而输入的是25小时这样
    ERR       	一般错误: 一般性错误
    WARN   		警告性错误: 需要发出警告的错误
    NOTICE  	通知: 程序可以运行但是还不够完美的错误
    INFO     	信息: 程序输出信息
    DEBUG   	调试: 调试信息
    SQL       SQL：SQL语句 注意只在调试模式开启时有效
    */
	
    // 日志记录方式
    private $logType = array(	
    				'system'	=> 0,
    				'mail'		=> 1,
    				'tcp'		=> 2,
    				'file'		=> 3
    				);
    /**
     * 日志写入
     *
     * @param string $message		日志信息
     * @param string $level			日志级别
     * @param integer $type			日志记录方式
     * @param string $destination	写入目标
     * @param string $extra			额外参数
     */
    public function write($message,$level="ERR",$type="file",$destination='',$extra=''){
        $now = date("Y-m-d H:i:s");
        if(empty($destination))
            $destination = LianPhp::conf()->log['logPath'].date('y_m_d').".log";
        if(3 == $type) { // 文件方式记录日志
            //检测日志文件大小，超过配置大小则备份日志文件重新生成
           if(is_file($destination) && floor(LianPhp::conf()->log['fileSize']) <= filesize($destination) )
                  rename($destination,dirname($destination).'/'.time().'-'.basename($destination));
        }
        error_log("{$now} {$level}: [{$_SERVER['REQUEST_URI']}] {$message}\r\n", self::$logType[$type],$destination,$extra );
    }

}
?>